package w83b.w83bManager;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import es.ejie.frmk.infraestructura.internacionalizacion.Q70GestorMensajesi18n;
import es.ejie.frmk.listeners.base.Q70ListenerUtils;
import w83b.w83bBeans.W83bCierreMensualBean;
import w83b.w83bBeans.W83bResultadosBean;
import w83b.w83bBeans.W83bTramiteActaBean;
import w83b.w83bDAO.W83bFactoriaDAO;
import w83b.w83bUtilidadesComunes.W83bClsConstantes;
import w83b.w83bUtilidadesComunes.W83bClsTrazas;
import w83b.w83bUtilidadesComunes.W83bDateUtil;


public class W83bCierre implements W83bICierre {
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bICierre#buscarInicioCierre(w83b.w83bBeans.W83bCierreMensualBean)
	 */
	public java.util.List buscarInicioCierre(w83b.w83bBeans.W83bCierreMensualBean param) throws Exception{
	
		List cm = W83bFactoriaDAO.getCierreDAO().buscarInicioCierre(param);

		W83bCierreMensualBean cierremensual = (W83bCierreMensualBean)cm.get(0);
		cierremensual.setFechaultimocierre(W83bFactoriaDAO.getCierreDAO().fechaUltimoCierre(param));
		
		W83bClsTrazas.trazaError(null, "setFechaultimocierre="+W83bFactoriaDAO.getCierreDAO().fechaUltimoCierre(param), null);
		
		return cm;	
	}
	/* (non-Javadoc)
	 * @see w83b.w83bManager.W83bICierre#prevalidarCierre(w83b.w83bBeans.W83bCierreMensualBean)
	 */
	public java.util.Map prevalidarCierre(w83b.w83bBeans.W83bCierreMensualBean param) throws Exception{
		
		Map mapa = new HashMap();
		
		List l=new ArrayList();
		
		List fila1=W83bFactoriaDAO.getCierreDAO().calculoFila1(param);
		l.add(fila1.get(1));
		mapa.put("calculofila1", fila1.get(0));
		
		List fila2=W83bFactoriaDAO.getCierreDAO().calculoFila2(param);
		l.add(fila2.get(1));
		mapa.put("calculofila2", fila2.get(0));
		
		List bajas=W83bFactoriaDAO.getCierreDAO().bajascierre(param);
		l.add(bajas.get(1));
		mapa.put("bajas", bajas.get(0));
		
		List fila4=W83bFactoriaDAO.getCierreDAO().calculoFila4(param);
		
		List fila3=W83bFactoriaDAO.getCierreDAO().calculoFila3(param,(List)fila1.get(0),(List)fila4.get(0));
		mapa.put("calculofila3", fila3.get(0));
		W83bCierreMensualBean fila3b=new W83bCierreMensualBean();
		fila3b.setTexto(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.inicidencias",param.getIdioma(),null));
		l.add(fila3.get(1));
		mapa.put("listaexcel", fila3.get(2));
		
		W83bCierreMensualBean fila4total=W83bFactoriaDAO.getCierreDAO().calculoDeshacer((W83bCierreMensualBean)fila4.get(1));
		l.add(fila4total);
		
		mapa.put("calculofila4", fila4.get(0));
		
		W83bCierreMensualBean total=new W83bCierreMensualBean();
		total.setTexto(Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.litcierre",param.getIdioma(),null)+" "+param.getFechaeleccionhasta());
		total.setEla(((W83bCierreMensualBean)fila1.get(1)).getEla()+((W83bCierreMensualBean)fila2.get(1)).getEla()+((W83bCierreMensualBean)fila3.get(1)).getEla()+fila4total.getEla()+((W83bCierreMensualBean)bajas.get(1)).getEla());
		total.setLab(((W83bCierreMensualBean)fila1.get(1)).getLab()+((W83bCierreMensualBean)fila2.get(1)).getLab()+((W83bCierreMensualBean)fila3.get(1)).getLab()+fila4total.getLab()+((W83bCierreMensualBean)bajas.get(1)).getLab());
		total.setUgt(((W83bCierreMensualBean)fila1.get(1)).getUgt()+((W83bCierreMensualBean)fila2.get(1)).getUgt()+((W83bCierreMensualBean)fila3.get(1)).getUgt()+fila4total.getUgt()+((W83bCierreMensualBean)bajas.get(1)).getUgt());
		total.setCcoo(((W83bCierreMensualBean)fila1.get(1)).getCcoo()+((W83bCierreMensualBean)fila2.get(1)).getCcoo()+((W83bCierreMensualBean)fila3.get(1)).getCcoo()+fila4total.getCcoo()+((W83bCierreMensualBean)bajas.get(1)).getCcoo());
		total.setUso(((W83bCierreMensualBean)fila1.get(1)).getUso()+((W83bCierreMensualBean)fila2.get(1)).getUso()+((W83bCierreMensualBean)fila3.get(1)).getUso()+fila4total.getUso()+((W83bCierreMensualBean)bajas.get(1)).getUso());
		total.setCuis(((W83bCierreMensualBean)fila1.get(1)).getCuis()+((W83bCierreMensualBean)fila2.get(1)).getCuis()+((W83bCierreMensualBean)fila3.get(1)).getCuis()+fila4total.getCuis()+((W83bCierreMensualBean)bajas.get(1)).getCuis());
		total.setCti(((W83bCierreMensualBean)fila1.get(1)).getCti()+((W83bCierreMensualBean)fila2.get(1)).getCti()+((W83bCierreMensualBean)fila3.get(1)).getCti()+fila4total.getCti()+((W83bCierreMensualBean)bajas.get(1)).getCti());
		total.setCsi(((W83bCierreMensualBean)fila1.get(1)).getCsi()+((W83bCierreMensualBean)fila2.get(1)).getCsi()+((W83bCierreMensualBean)fila3.get(1)).getCsi()+fila4total.getCsi()+((W83bCierreMensualBean)bajas.get(1)).getCsi());
		total.setNosin(((W83bCierreMensualBean)fila1.get(1)).getNosin()+((W83bCierreMensualBean)fila2.get(1)).getNosin()+((W83bCierreMensualBean)fila3.get(1)).getNosin()+fila4total.getNosin()+((W83bCierreMensualBean)bajas.get(1)).getNosin());
		total.setOtros(((W83bCierreMensualBean)fila1.get(1)).getOtros()+((W83bCierreMensualBean)fila2.get(1)).getOtros()+((W83bCierreMensualBean)fila3.get(1)).getOtros()+fila4total.getOtros()+((W83bCierreMensualBean)bajas.get(1)).getOtros());
		total.setTotaldel(((W83bCierreMensualBean)fila1.get(1)).getTotaldel()+((W83bCierreMensualBean)fila2.get(1)).getTotaldel()+((W83bCierreMensualBean)fila3.get(1)).getTotaldel()+fila4total.getTotaldel()+((W83bCierreMensualBean)bajas.get(1)).getTotaldel());
		l.add(total);
		mapa.put("tabla", l);
		
		mapa.put("excelnuevas", fila3.get(3));
		
		return mapa;	
	}
	
	public java.lang.String procesarCierre(java.util.HashMap param) throws Exception{
		String l="1";
		boolean existe=(boolean)W83bFactoriaDAO.getCierreDAO().existeCierre((W83bCierreMensualBean)param.get("cm"));
		//		W83bFactoriaDAO.getCierreDAO().modificarcamponueva((List)param.get("calculofila4"),(W83bCierreMensualBean)param.get("cm"));
		String nacta="";
	    String anoacta="";
	    String territ="";
	    String ver="";
	    List lista=(List)param.get("calculofila4");
		for (int i=0;i<lista.size();i++){
	    	W83bResultadosBean res = (W83bResultadosBean)lista.get(i);
	    		if (!nacta.equals(res.getNacta())||!anoacta.equals(res.getAnoacta())||!territ.equals(res.getTerritorio())||!ver.equals(res.getVer())){
	    			W83bFactoriaDAO.getCierreDAO().modificarcamponueva(res);
	    			W83bFactoriaDAO.getCierreDAO().anyadirHistorialTramitacionCierre(res,"4","1",(W83bCierreMensualBean)param.get("cm"));
	    			nacta=res.getNacta();
	    			anoacta=res.getAnoacta();
	    			territ=res.getTerritorio();
	    			ver=res.getVer();
	    		}
	    }
		if (existe){
			l=(String)W83bFactoriaDAO.getCierreDAO().procesarCierreMod((W83bCierreMensualBean)param.get("cm"));
		}
		else{
			l=(String)W83bFactoriaDAO.getCierreDAO().procesarCierre((W83bCierreMensualBean)param.get("cm"));
		}
		
		return l;	
	}
	
	public java.util.List consultarCierre(w83b.w83bBeans.W83bCierreMensualBean param) throws Exception{
		
		List l=W83bFactoriaDAO.getCierreDAO().consultarCierre(param);
		String m="";
		for (int i=0;i<l.size();i++){
			W83bCierreMensualBean cm=(W83bCierreMensualBean)l.get(i);
			m=W83bDateUtil.getInstance().sabernombremes(Integer.parseInt(cm.getMescierre())-1,cm.getIdioma());
			cm.setMescierre(m);
			if (cm.getAraba()==null||W83bClsConstantes.CONSTANTE_NO.equals(cm.getAraba())){
				cm.setAraba("<img src='"+Q70ListenerUtils.getApplicationResourceURI("PREFIJO_URL_ESTATICO","ALIAS_ESTATICO_RIA")+"/images/botones/cancelar.png'/>"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.nocerrado",param.getIdioma(),null));
			}
			else{
				cm.setAraba("<img src='"+Q70ListenerUtils.getApplicationResourceURI("PREFIJO_URL_ESTATICO","ALIAS_ESTATICO_RIA")+"/images/botones/drag-valido.png'/>"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.cerrado",param.getIdioma(),null));
			}
			if (cm.getBizkaia()==null||W83bClsConstantes.CONSTANTE_NO.equals(cm.getBizkaia())){
				cm.setBizkaia("<img src='"+Q70ListenerUtils.getApplicationResourceURI("PREFIJO_URL_ESTATICO","ALIAS_ESTATICO_RIA")+"/images/botones/cancelar.png'/>"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.nocerrado",param.getIdioma(),null));
			}
			else{
				cm.setBizkaia("<img src='"+Q70ListenerUtils.getApplicationResourceURI("PREFIJO_URL_ESTATICO","ALIAS_ESTATICO_RIA")+"/images/botones/drag-valido.png'/>"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.cerrado",param.getIdioma(),null));
			}
			if (cm.getGipuzkoa()==null||W83bClsConstantes.CONSTANTE_NO.equals(cm.getGipuzkoa())){
				cm.setGipuzkoa("<img src='"+Q70ListenerUtils.getApplicationResourceURI("PREFIJO_URL_ESTATICO","ALIAS_ESTATICO_RIA")+"/images/botones/cancelar.png'/>"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.nocerrado",param.getIdioma(),null));
			}
			else{
				cm.setGipuzkoa("<img src='"+Q70ListenerUtils.getApplicationResourceURI("PREFIJO_URL_ESTATICO","ALIAS_ESTATICO_RIA")+"/images/botones/drag-valido.png'/>"+Q70GestorMensajesi18n.getSingleton().getMessage("w83bcomun","comun.cierre.cerrado",param.getIdioma(),null));
			}
		}
		
		return l;	
	}
	
	public java.lang.String deshacerCierre(w83b.w83bBeans.W83bCierreMensualBean param) throws Exception{
		try{
			int dias=W83bDateUtil.getInstance().getUltimoDiaDelMes(Integer.parseInt(param.getAnocierre()), Integer.parseInt(param.getMes())-1);
			//Busco las actas en la tabla tramitación 58 que se hayan cerrado en el mes que le paso por parámetro
			List actascierrehistorial = W83bFactoriaDAO.getCierreDAO().buscarActascierrehistorial(param, dias);
			for (int i=0; i<actascierrehistorial.size(); i++){
				W83bTramiteActaBean acta = (W83bTramiteActaBean)actascierrehistorial.get(i);
				//Modifico el campo nueva de cada acta
				W83bFactoriaDAO.getCierreDAO().modificarActascierrehistorial(acta);
			}
			//Borro los registros de la tabla tramitación que correspondan con las actas que se han cerrado en el mes que le paso por parámetro
			W83bFactoriaDAO.getCierreDAO().borrarActascierrehistorial(actascierrehistorial, param);
			//Modifico a N el mes cuyo cierre quiero deshacer
			W83bFactoriaDAO.getCierreDAO().deshacerTablaCierre(param);
		}catch (Exception e) {
			W83bClsTrazas.trazaError(null, "deshacerCierre", null);
			throw e;
		}
		return "0";
	}

}